This application is related in general to digital processing and more specifically to real-time digital processing.
Early real-time systems were often “hand crafted” in order to meet stringent timing constraints. In particular, real-time tasks that were to be executed concurrently were analyzed to determine their detailed timing requirements. Then, a real-time operating system was “built around” these tasks such that their timing requirements were satisfied. Because such real-time systems are tied so closely with the underlying tasks, they are not easily modifiable or extendible. For example, attempting to modify a task or add an additional task to the system could require a complete re-design of the system.
Real-time systems have since been developed that are more flexible than the “hand crafted” systems. These systems often employ one of two common methods for scheduling real-time tasks for execution: the “scheduled reservation” model and the “fixed priority” model.
Under the scheduled reservation model, the processor is viewed as a quantifiable resource that can be reserved like physical memory or disk blocks. But if two tasks require processor resources simultaneously, then one of the tasks will have to wait until the other is finished. If this task must wait too long, then it may not be able to execute in “real-time.” Thus, the scheduled reservation model cannot guarantee real-time execution of all tasks. It is, however, much more flexible and extendible than “hand crafted” real-time systems.
Under the fixed priority model, each task is assigned a priority level by developers. During operation, tasks are executed strictly based on their priority level. For example, a task with a higher priority than that of an executing task can interrupt that task, whereas a task with a lower priority than that of the executing task must wait until the executing task finishes. As with the scheduled reservation model, the fixed priority model cannot guarantee real-time execution of tasks (except for the highest priority task), although it is much more flexible and extendible than “hand crafted” systems.
It is desirable to provide a real-time system that improves upon one or more of the above-mentioned (or other) shortcomings in the prior art.